]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
windowPreview: Track overlay state separately
authorFlorian Müllner <fmuellner@gnome.org>
Fri, 8 Jan 2021 17:36:55 +0000 (18:36 +0100)
committerFlorian Müllner <fmuellner@gnome.org>
Mon, 1 Feb 2021 20:06:13 +0000 (21:06 +0100)
We currently express the state as a combination of border visibility
and the eventual transition state. That's tedious, in particular if
we want to use the state outside the show()/hide() methods.

Just track the requested visibility in a separate property.

https://gitlab.gnome.org/Teams/Design/os-mockups/-/issues/81

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1605>

js/ui/windowPreview.js

index f6d1490a3df9197ceb32e5a3cb8eca849e655ce0..014b2cc581d8786514c434ddde2da2de9482e085 100644 (file)
@@ -275,6 +275,7 @@ var WindowPreview = GObject.registerClass({
 
         this._selected = false;
         this._overlayEnabled = true;
+        this._overlayShown = false;
         this._closeRequested = false;
         this._idleHideOverlayId = 0;
 
@@ -457,14 +458,14 @@ var WindowPreview = GObject.registerClass({
         if (!this._overlayEnabled)
             return;
 
-        const ongoingTransition = this._border.get_transition('opacity');
-
-        // Don't do anything if we're fully visible already
-        if (this._border.visible && !ongoingTransition)
+        if (this._overlayShown)
             return;
 
+        this._overlayShown = true;
+
         // If we're supposed to animate and an animation in our direction
         // is already happening, let that one continue
+        const ongoingTransition = this._border.get_transition('opacity');
         if (animate &&
             ongoingTransition &&
             ongoingTransition.get_interval().peek_final_value() === 255)
@@ -488,14 +489,14 @@ var WindowPreview = GObject.registerClass({
     }
 
     hideOverlay(animate) {
-        const ongoingTransition = this._border.get_transition('opacity');
-
-        // Don't do anything if we're fully hidden already
-        if (!this._border.visible && !ongoingTransition)
+        if (!this._overlayShown)
             return;
 
+        this._overlayShown = false;
+
         // If we're supposed to animate and an animation in our direction
         // is already happening, let that one continue
+        const ongoingTransition = this._border.get_transition('opacity');
         if (animate &&
             ongoingTransition &&
             ongoingTransition.get_interval().peek_final_value() === 0)